/**
 * 存储工具类
 * 封装微信小程序的本地存储操作，提供更方便的API
 */

/**
 * 设置缓存
 * @param {string} key - 缓存键名
 * @param {any} value - 缓存的数据
 * @param {number} [expireTime=0] - 有效期，单位：秒，0表示永久有效
 */
export function setCache(key, value, expireTime = 0) {
  try {
    const data = {
      value,
      expire: expireTime === 0 ? 0 : Date.now() + expireTime * 1000
    };
    wx.setStorageSync(key, JSON.stringify(data));
  } catch (error) {
    console.error('存储数据失败', error);
  }
}

/**
 * 获取缓存
 * @param {string} key - 缓存键名
 * @param {any} [defaultValue=null] - 默认值
 * @returns {any} 缓存的数据，若已过期或不存在则返回默认值
 */
export function getCache(key, defaultValue = null) {
  try {
    const dataStr = wx.getStorageSync(key);
    if (!dataStr) return defaultValue;
    
    const data = JSON.parse(dataStr);
    // 判断是否过期
    if (data.expire > 0 && data.expire < Date.now()) {
      wx.removeStorageSync(key);
      return defaultValue;
    }
    
    return data.value;
  } catch (error) {
    console.error('获取缓存失败', error);
    return defaultValue;
  }
}

/**
 * 删除缓存
 * @param {string} key - 缓存键名
 */
export function removeCache(key) {
  try {
    wx.removeStorageSync(key);
  } catch (error) {
    console.error('删除缓存失败', error);
  }
}

/**
 * 清空所有缓存
 */
export function clearCache() {
  try {
    wx.clearStorageSync();
  } catch (error) {
    console.error('清空缓存失败', error);
  }
}

/**
 * 获取缓存信息
 * @returns {object} 缓存信息
 */
export function getCacheInfo() {
  try {
    return wx.getStorageInfoSync();
  } catch (error) {
    console.error('获取缓存信息失败', error);
    return { keys: [], currentSize: 0, limitSize: 0 };
  }
}

export default {
  set: setCache,
  get: getCache,
  remove: removeCache,
  clear: clearCache,
  info: getCacheInfo
}; 